1. Field
The disclosed embodiments relate generally to pseudo-dual port memories.
2. Background
Dual port memories typically have two ports and an array of memory cells. The memory array can be simultaneously accessed from both of the ports provided that the memory cells being accessed from one port are not the same memory cells that are being accessed from the other port. A common type of memory cell used in such dual port memories involves eight field effect transistors (FETs). Four of the transistors are interconnected to form two cross-coupled inverters. A first data node D of the memory cell is the node at the output lead of a first of the inverters and the input lead of the second of the inverters. A second data node DN of the memory cell is the node at the output lead of the second of the inverters and the input lead of the first of the inverters. There are two access transistors coupled to the first data node D. The first access transistor is provided so that a first bit line B1 can selectively be coupled to the first data node D. The second access transistor is provided so that a second bit line B2 can selectively be coupled to the first data node D. Similarly, there are two access transistors coupled to the second data node DN. The first access transistor is provided so that a first bit line bar B1N can be coupled to the second node DN. The second access transistor is provided so that a second bit line bar B2N can be coupled to the second node DN. The first bit line B1 and first bit line bar B1N constitute a bit line pair and a for coupling an addressed memory cell to a first of the two ports of the dual port memory. The second bit line B2 and second bit line bar B2N constitute a bit line pair and are for coupling an addressed memory cell to a second of the two ports of the dual port memory.
The memory cells in a single port memory typically only include six transistors. As in the case of the eight-transistor cell, four of the transistors form a cross-coupled inverter structure. Rather than there being two pairs of access transistors as in the eight transistor cell, however, the six transistor cell has only one pair of access transistors. A first access transistor is provided for selectively coupling the first data node D of the cross-coupled inverters to a bit line B. A second access transistor is provided for coupling a second data node DN of the cross-coupled inverters to a bit line bar BN. The six-transistor memory cell typically consumes only about half as much integrated circuit area than the eight-transistor cell when the two types of memory cells are fabricated using the same process.
In order to take advantage of the smaller size of the six-transistor memory cell, a memory device called a pseudo-dual port memory is often used. In one example, a pseudo-dual port memory has a single memory array where each memory cell of the array is a six-transistor memory cell that can be selectively coupled to a single pair of bit lines (for example, bit line B and bit line bar BN). The memory array operates as a single port memory in that only one memory access is performed at one time.
The pseudo-dual port memory, however, mimics a dual port memory in that it has two ports. In one example, the pseudo-dual port memory has circuitry sometimes called a Time Delayed Multiplexer (TDM). A single input clock signal is received onto the pseudo-dual port memory and this single input clock signal is used to latch an input read address, an input write address, and an input data value. The rising edge of the input clock signal is used to initiate a read operation using the input read address. The read operation is completed. Thereafter, the falling edge of the input clock signal occurs. The TDM uses the falling edge of the input clock signal to initiate a write operation. The input write address is used to address the memory array during the write operation and the data written into the memory array is the input data value. Although two memory operations are performed in a single cycle of the input clock signal, the two memory operations are in reality performed one after the other. From outside the pseudo-dual port memory, however, the pseudo-dual port memory appears to allow two accesses of the memory array at the same time or substantially at the same time.
The inventor has recognized that the amount of time required to perform the first read memory operation may not be equal to the amount of time required to perform the second write memory operation. Using a conventional TDM approach slows overall memory access times because the relative amounts of time available for the two operations is determined by the time when the rising edge of the clock cycle occurs and the time when the falling edge of the clock cycle occurs. If, for example, the clock signal is low for as long as it is high in a clock cycle (i.e., the clock signal has a 50/50 duty cycle), then the same amount of time must be allowed for performing both the faster read operation and the slower write operation. The result is an amount of wasted time that starts after the read operation has been completed and ends upon the falling edge of the clock signal.
Not only does the conventional TDM approach sometimes slow overall memory access times in situations where the relative amounts of time required to perform the two memory access does not match the duty cycle of the clock signal, but the conventional TDM approach also can cause overall memory access times to be slower than they otherwise would have to be due to the use of the falling edge of the clock signal to initiate operations. There may be jitter in the duty cycle of the clock signal such that the timing of the falling edge of the clock signal changes from clock cycle to clock cycle. If the circuitry is optimized for operation under one clock signal duty cycle condition, then it typically is not optimized for operation under another clock signal duty cycle condition. A time margin is typically built into the circuitry so that the circuitry of the pseudo-dual port memory will operate correctly under all clock signal duty cycle conditions. This time margin translates into wasted time under certain operating conditions where the time margin is not required for proper operation. The maximum clock frequency of the pseudo-dual port memory is therefore specified to be lower than it could be were there no such time margin.
Whereas the pseudo-dual port memory described above has a single input clock signal, it would be desirable in some applications for a pseudo-dual port memory to have a first port that was clocked with a first input clock signal and a second port that was clocked with a second input clock signal. By providing two separate input clocks, the use of one port could be made largely independent of the use of the other port. By making the two ports more independent, use of the pseudo-dual port memory could be simplified.
In view of the above, an improved pseudo-dual port memory is desired that does not use both the rising and falling edges of the same input clock signal to control the ordering of two memory operations that also has two separate ports where each port has its own input clock.